//package com.tm.userserver.config;
//
//import com.netflix.client.config.IClientConfig;
//import com.netflix.loadbalancer.AbstractLoadBalancerRule;
//import com.netflix.loadbalancer.ILoadBalancer;
//import com.netflix.loadbalancer.Server;
//
//import java.util.List;
//import java.util.concurrent.ThreadLocalRandom;
//
//public class TestRule  extends AbstractLoadBalancerRule {
//
//
//    /**
//     * 选择对应的服务器
//     * @param lb
//     * @param key
//     * @return
//     */
//    public Server choose(ILoadBalancer lb, Object key) {
//        if (lb == null) {
//            return null;
//        }
//        Server server = null;
//
//        while (server == null) {
//            if (Thread.interrupted()) {
//                return null;
//            }
//            List<Server> upList = lb.getReachableServers();
//            List<Server> allList = lb.getAllServers();
////            return upList.get(0);
//            int serverCount = allList.size();
//            if (serverCount == 0) {
//                /*
//                 * No servers. End regardless of pass, because subsequent passes
//                 * only get more restrictive.
//                 */
//                return null;
//            }
//
//            int index = chooseRandomInt(serverCount);
//            server = upList.get(index);
//
//
//            // Shouldn't actually happen.. but must be transient or a bug.
//            server = null;
//            Thread.yield();
//        }
//
//        return server;
//
//    }
//
//    protected int chooseRandomInt(int serverCount) {
//        return ThreadLocalRandom.current().nextInt(serverCount);
//    }
//
//    @Override
//    public Server choose(Object key) {
//        return choose(getLoadBalancer(), key);
//    }
//
//    @Override
//    public void initWithNiwsConfig(IClientConfig clientConfig) {
//        // TODO Auto-generated method stub
//
//    }
//}
